package br.com.usjt.sge.util.cpf;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;

/**
 * Classe que implementa um conversor para CPF.
 * @author cicero
 *
 */
public class CPFConversor implements Converter {

	/**
	 *  Converte CPF formatado para um sem pontos e traco
	 *  ex. 111.111.111-11 para 11111111111
	 *  @param context - contexto da aplicacao
	 *  @param component - componente jsf
	 *  @param value - valor do componente
	 *  @return um objeto cpf a partir de uma String
	 */
	@Override
	public Object getAsObject(FacesContext context, UIComponent component, String value) {
		
		String cpf = value;
		
		if (value != null && !value.equals("")) {
			
			cpf = value.replaceAll("\\.", "").replaceAll("\\-", "");
						
		}
		
		return cpf;
	
	}

	
	/**
	 *  Converte CPF nao formatado para um com pontos e traco
	 *  ex. 11111111111 para 111.111.111-11
	 *  @param context - contexto da aplicacao
	 *  @param component - componente jsf
	 *  @param value - uma String com cpf para um objeto CPF
	 */
	@Override
	public String getAsString(FacesContext context, UIComponent component, Object value) {
		
		String cpf = (String) value;
		
		if (cpf != null && cpf.length() == 11) {
			
			cpf = cpf.substring(0, 3) + "." + cpf.substring(3, 6) + "." + cpf.substring(6, 9) 
					+ "-" + cpf.substring(9, 11);
							
		}
		
		return cpf;
	}

}
